X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/blobdiff_plain/097781e6ad3f7bb1c13c16ff7b6bb7219764fb29..4fc09567c557a1110180940cca40fd7144921026:/Super%20Polarity/Actors/Actor.cs diff --git a/Super Polarity/Actors/Actor.cs b/Super Polarity/Actors/Actor.cs deleted file mode 100644 index c317796..0000000 --- a/Super Polarity/Actors/Actor.cs +++ /dev/null @@ -1,251 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.Graphics; - -namespace SuperPolarity -{ - class Actor - { - protected SuperPolarity game; - - public List Children; - - // Graphics / In-Game - protected Texture2D Texture; - protected Vector2 Origin; - public bool Active; - public Rectangle Box; - public Vector4 BoxDimensions; - protected Texture2D BoxTexture; - - // Physical Properties - public Vector2 Position; - protected Vector2 Velocity; - protected Vector2 Acceleration; - public float Angle; - - // Constraints / Behavior - public float MaxVelocity; - protected float AccelerationRate; - public int HP; - protected bool Immortal; - public bool Dying; - public int Value; - protected Color Color; - - public Actor Parent; - - public int Width - { - get { return Texture.Width; } - } - - public int Height - { - get { return Texture.Height; } - } - - public Actor(SuperPolarity newGame) - { - game = newGame; - BoxDimensions.X = 20; - BoxDimensions.Y = 20; - BoxDimensions.W = 15; - BoxDimensions.Z = 15; - } - - public virtual void Initialize(Texture2D texture, Vector2 position) - { - Texture = texture; - Position = position; - Active = true; - - Children = new List(); - - Origin = new Vector2(Texture.Width / 2, Texture.Height / 2); - Velocity = new Vector2(0, 0); - Acceleration = new Vector2(0, 0); - - MaxVelocity = 5; - AccelerationRate = 10; - - HP = 1; - Immortal = false; - - Dying = false; - Value = 1; - - InitBox(); - BoxTexture = new Texture2D(game.GraphicsDevice, 1, 1); - BoxTexture.SetData(new Color[] { Color.White }); - - Color = Color.White; - } - - protected void InitBox() - { - Box = new Rectangle((int)(Position.X - BoxDimensions.X), (int)(Position.Y - BoxDimensions.X), (int)(BoxDimensions.X + BoxDimensions.X + BoxDimensions.W), (int)(BoxDimensions.Y + BoxDimensions.Y + BoxDimensions.Z)); - } - - public void AutoDeccelerate(GameTime gameTime) - { - if (Acceleration.X == 0 && Velocity.X > 0) - { - if (AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds > Velocity.X) - { - Velocity.X = 0; - Acceleration.X = 0; - } - else - { - Acceleration.X = -AccelerationRate; - } - } - - if (Acceleration.X == 0 && Velocity.X < 0) - { - if (-AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds < Velocity.X) - { - Velocity.X = 0; - Acceleration.X = 0; - } - else - { - Acceleration.X = AccelerationRate; - } - } - - if (Acceleration.Y == 0 && Velocity.Y > 0) - { - if (AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds > Velocity.Y) - { - Velocity.Y = 0; - Acceleration.Y = 0; - } - else - { - Acceleration.Y = -AccelerationRate; - } - } - - if (Acceleration.Y == 0 && Velocity.Y < 0) - { - if (-AccelerationRate * gameTime.ElapsedGameTime.TotalSeconds < Velocity.Y) - { - Velocity.Y = 0; - Acceleration.Y = 0; - } - else - { - Acceleration.Y = AccelerationRate; - } - } - } - - public virtual void Update(GameTime gameTime) - { - Move(gameTime); - ChangeAngle(); - CheckOutliers(); - UpdateBox(); - } - - protected virtual void UpdateBox() - { - Box.X = (int)(Position.X - BoxDimensions.X); - Box.Y = (int)(Position.Y - BoxDimensions.Y); - } - - public virtual void Move(GameTime gameTime) - { - AutoDeccelerate(gameTime); - - var maxVelocity = MaxVelocity; - - Velocity.X = Velocity.X + Acceleration.X * (float)gameTime.ElapsedGameTime.TotalSeconds; - Velocity.Y = Velocity.Y + Acceleration.Y * (float)gameTime.ElapsedGameTime.TotalSeconds; - - if (Velocity.X > MaxVelocity) - { - Velocity.X = MaxVelocity; - } - - if (Velocity.X < -MaxVelocity) - { - Velocity.X = -MaxVelocity; - } - - if (Velocity.Y > MaxVelocity) - { - Velocity.Y = MaxVelocity; - } - - if (Velocity.Y < -MaxVelocity) - { - Velocity.Y = -MaxVelocity; - } - - Position.X = Position.X + Velocity.X; - Position.Y = Position.Y + Velocity.Y; - } - - public void ChangeAngle() - { - if (Math.Abs(Velocity.Y) <= 0.1 && Math.Abs(Velocity.X) <= 0.1) - { - return; - } - Angle = (float)Math.Atan2(Velocity.Y, Velocity.X); - } - - public virtual void Draw(SpriteBatch spriteBatch) - { - foreach (Actor child in Children) - { - child.Draw(spriteBatch); - } - - spriteBatch.Draw(Texture, Position, null, Color, Angle, Origin, 1f, SpriteEffects.None, 0f); - spriteBatch.Draw(BoxTexture, Box, new Color(255, 0, 255, 25)); - } - - void CheckOutliers() - { - for (var i = Children.Count; i > 0; i--) - { - var actor = Children[i - 1]; - if (actor.Position.X < -SuperPolarity.OutlierBounds || actor.Position.Y < -SuperPolarity.OutlierBounds || - actor.Position.X > game.GraphicsDevice.Viewport.Width + SuperPolarity.OutlierBounds || - actor.Position.Y > game.GraphicsDevice.Viewport.Height + SuperPolarity.OutlierBounds) - { - Children.Remove(actor); - } - } - } - - public virtual void Collide(Actor other, Rectangle collision) - { - } - - public void TakeDamage(int amount) - { - if (!Immortal) - { - HP = HP - amount; - if (HP < 0) - { - Die(); - } - } - } - - protected virtual void Die() - { - Dying = true; - } - } -}